לפני שנתחיל, נדבר על הכותרת של המאמר הזה כי חלקכם בוודאי חושבים שהשתגעתי.
נדבר על זה באנלוגיה לאפיית לחם - אתם יכולים לקנות מכונה שמכינה לחם ולהכין ממיקס מוכן או שאתם יכולים לקחת קערה, קמח, שמרים ומצרכים נוספים, לערבב, ללוש, לפתוח, לקלוע ולהכניס לתנור.
אם אתה רוצה לחם טרי, האפשרות הראשונה תתן לך את זה במהירות ובקלות. אבל, אם אתה רוצה להבין ולחוות את כל התהליך שמתרחש מתחת לפני השטח לפני שמגיעים למוצר הסופי אתה צריך להשקיע קצת בעבודה על המוצר.
זה דומה מאוד לעבודה עם שפות תכנות ובמיוחד שפת C. אתה צריך לחפור עמוק ו"ללכלך את הידיים" אבל אתה מסיים עם הבנות עמוקות לגבי התהליך.
בנוסף, יש ליצור הבחנה בין מי שמעוניין ללמוד שפת תכנות כלשהי (זה שרק רוצה לחם טרי), לבין מי שחפץ להיות מתכנת רב-לשוני (האופה בנשמה). ואל תבינו אותי לא נכון, כל שפת תכנות שתלמדו (גבוהה ככל שתהיה) כמו Python או Javascript, תהפוך אתכם למתכנתים. ועדיין האתגר האמיתי לרוב המתכנתים הוא להיות MASTER בשפת בסיס כמו שפת C.
אחרי שהסברנו את זה ננסה לפרט את היתרונות של לימוד שפת C:
כשאתה לומד שפות גבוהות יותר משפת C אתה באופן אוטומטי מתרחק מהיסודות של שפת התכנות ולחילופין, אתה לומד יותר ספריות ו-Frameworks.
עם שפת C את מתעסק בכך הרבה פחות ואתה הרבה יותר מתמקד בסמנטיקה של הקוד. שפת C לרוב "מכריחה" אותך לחשוב יותר לעומק לגבי מה שקורה מתחת למכסה המנוע.
C היא שפה נמוכה יחסית, כשאנשים מדברים על C לרוב הם ישתמשו בביטויים כמו: "לתכנת לברזל" או "לתכנת קרוב לחוטים". C היא השפה בה משתמשים קומפיילרים, מערכות הפעלה, עורכים ומערכות Embedded.
פשטות ומהירות
שפת C היא שפה בסיסית, פשוטה, אלגנטית ומהירה ביותר. היא קומפקטית ויעילה מאוד. שפת Cתומכת במצביעים, פעולות על ביטים ומילות מפתח כמו: extern, volatile, static, and register. עם שפת C אתה תבין הרבה יותר טוב כיצד לכתוב קוד יעיל מאשר עם שפה גבוהה יותר.
הדבר היחיד שילמד אותך את הדברים הללו באותו אופן היא שפת אסמבלי, ועם הטכנולוגיות והדרישות היום אני לא מאחלת את זה לאף אחד.
הסינטקס של C היא הסיבה לכך שמתכנתים מדברים על "משפחה של שפות C" שכולל בדרך כלל שפות כמו: C, C++, C#, Java, Javascript ועוד.
משמעת
שפת C יכולה להיות לפעמים תובענית, מתוחכמת ולפעמים ממש סתומה, כלומר לא מובנת. אתה יכול בקלות לכתוב קוד בC שיהיה קשה להבין ולקרוא. אבל, וכאן הנקודה החשובה, אתה לא חייב!
לכתוב קוד שניתן לתחזוק בC דורש משמעת קוד. אחרת מציאה ותיקון של נקודה ופסיק חסרים או נוספים ב- C יכולה לפעמים להיות משימה נוראית.
פחות הסחות דעת
C היא לא שפה מונחית עצמים אז דעתך לא מוסחת מדברים כמו ירושה או פולימורפיזם. זה לא שדברים אלו לא חשובים, זה פשוט שיש אפשרות לגרום לדברים להיות יותר פשוטים כשלומדים קודם תכנות בסיסי. למעשה, ברגע שלמדת C וכתבת מספר תכניות Embedded על בורדים, ללמוד C++ זה הצעד הטבעי הבא.
פיתוח מערכות Embedded
היתרון האחרון של למידת שפת C הוא היכולת ליצור מערכות Embedded. כמתכנת אני תמיד מקבלת סיפוק כשאני מטמיעה קטע קוד שעבדתי עליו. לגרום למחשב לעשות מה שאתה רוצה יכול להיות מספק מאוד. אבל כשאני משלבת את קוד הEmbedded שלי עם חומרה שגורמת לדברים לקרות מחוץ למחשב (כמו להניע יד רובוטית) אני מקבלת ריגוש שאין דומה לו. הריגוש הזה מתקבל רק בגלל שאני יודעת לתכנת בשפת C.